package com.zyl.backup;

import java.io.IOException;

/**
 * @version v1.0
 * @ProjectName: env_gather
 * @Package: com.zyl.backup
 * @ClassName: BackUp
 * @Description TODO(备份模块的接口)
 * 用于规范备份模块中，用于存储数据和获取
 * @Author 翟玉龙
 * @Date 2024/10/18-14:25
 */
public interface BackUp {
    /**
     * 将需要备份的数据存入指定的备份文件中
     * @param filePath  备份文件的路径
     * @param data      待存储的备份数据
     * @param append    标识文件是否为追加写
     *                  true -> 追加  false -> 覆盖
     * @param <T>       数据泛型
     */
    <T> void store(String filePath, T data, boolean append) throws IOException;

    /**
     * 读取指定备份文件的数据
     * @param filePath  备份文件的路径
     * @param clazz     {@link Class 备份数据的类型}
     * @param deleted   备份文件读取结束后的策略
     *                  true -> 读取完删除 false -> 读完后保留
     * @param <T>       数据泛型
     */
    <T> T load(String filePath, Class<T> clazz, boolean deleted) throws IOException;
}
